//Aguarda o dispositivo caregar as bibliotecas da API
document.addEventListener("deviceready", onDeviceReady, false);
var db = window.openDatabase("bd_mobile", "1.0", "Canvas Mobile",200000);

function doLog(s) {
	setTimeout(function() {
		console.log(s);
	}, 3000);
}

// API´s disponiveis
// Criação do BD
function onDeviceReady() {
	doLog(onDeviceReady);
	db.transaction(populateDB, errorCB, successCB);
}

// Popular DB
function populateDB(tx) {
	doLog(populateDB);

	tx.executeSql('CREATE TABLE IF NOT EXISTS USUARIO ( id INT AUTO_INCREMENT PRIMARY KEY , login VARCHAR(60) NOT NULL, senha TEXT NOT NULL)');
	tx.executeSql('CREATE TABLE IF NOT EXISTS PERFIL  ( id_usuario BIGINT PRIMARY KEY NOT NULL, foto_perfil TEXT NOT NULL, nome VARCHAR(100) NOT NULL, cargo VARCHAR(60) NOT NULL, CONSTRAINT fk_PERFIL_USUARIO FOREIGN KEY (id_usuario) REFERENCES USUARIO (id))');
	tx.executeSql('CREATE TABLE IF NOT EXISTS CANVAS  ( id BIGINT AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(50) NOT NULL, dt_criacao DATETIME NOT NULL, id_responsavel BIGINT NOT NULL, CONSTRAINT fk_CANVAS_PERFIL1 FOREIGN KEY (id_responsavel) REFERENCES PERFIL (id_usuario))');
	tx.executeSql('CREATE TABLE IF NOT EXISTS PARTICIPANTES	  ( id_usuario BIGINT NOT NULL, id_canvas BIGINT NOT NULL,PRIMARY KEY (id_usuario, id_canvas), CONSTRAINT fk_PERFIL_has_CANVAS_PERFIL1 FOREIGN KEY (id_usuario) REFERENCES PERFIL (id_usuario), CONSTRAINT fk_PERFIL_has_CANVAS_CANVAS1 FOREIGN KEY (id_canvas) REFERENCES CANVAS (id))');
	tx.executeSql('CREATE TABLE IF NOT EXISTS QUADRANTE ( id BIGINT AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(150) NOT NULL, icone TEXT NOT NULL, id_canvas BIGINT NOT NULL, CONSTRAINT fk_QUADRANTE_CANVAS1 FOREIGN KEY (id_canvas) REFERENCES CANVAS (id))');
	tx.executeSql('CREATE TABLE IF NOT EXISTS POSTIT ( id BIGINT AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(150) NOT NULL, descricao TEXT, id_quadrante BIGINT, id_usuario BIGINT, CONSTRAINT fk_POSTIT_QUADRANTE1 FOREIGN KEY (id_quadrante) REFERENCES QUADRANTE (id), CONSTRAINT fk_POSTIT_PERFIL1 FOREIGN KEY (id_usuario) REFERENCES PERFIL (id_usuario))');
	tx.executeSql('CREATE TABLE IF NOT EXISTS COMENTARIO ( id BIGINT AUTO_INCREMENT PRIMARY KEY, descricao LONGTEXT NOT NULL, data DATETIME NOT NULL, id_postit BIGINT NOT NULL, id_usuario BIGINT NOT NULL, CONSTRAINT fk_COMENTARIO_POSTIT1 FOREIGN KEY (id_postit) REFERENCES POSTIT (id), CONSTRAINT fk_COMENTARIO_PERFIL1 FOREIGN KEY (id_usuario) REFERENCES PERFIL (id_usuario))');
	tx.executeSql('CREATE TABLE IF NOT EXISTS ARQUIVO (id BIGINT AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(60) NOT NULL, url TEXT NOT NULL, data DATETIME NOT NULL, id_postit BIGINT NOT NULL, id_usuario BIGINT NOT NULL, CONSTRAINT fk_ARQUIVO_POSTIT1 FOREIGN KEY (id_postit) REFERENCES POSTIT (id), CONSTRAINT fk_ARQUIVO_PERFIL1 FOREIGN KEY (id_usuario) REFERENCES PERFIL (id_usuario))');
}

function insertPostit(titulo, descricao, id_quadrante, id_usuario){
	db.transaction(function(tx){
		var sql = 'INSERT INTO POSTIT (titulo, descricao, id_quadrante, id_usuario) VALUES ("'+titulo+'","'+descricao+'","'+id_quadrante+'","'+id_usuario+'")';		
		tx.executeSql(sql);

	});
}


// Transação error CallBack
function errorCB(tx, err) {
	alert("Erro ao processar SQL: " + err);
}

function successCB() {
	db.transaction(populateDB, errorCB);
}